*Cowboy AI streamlines information integration and management.*
This repository is HIGHLY unstable and incomplete.
Version: 0.7.0
Please don't let this discourage you. This repository is rapidly changing, we are just issuing a word of caution that you may not want to use this in a production system without a great deal of testing and validation.
We have issued this repository in it's current state intentionally to invite community submissions and involvement in the MIT Licensed version of CIM.
There is a great deal of proven mathematics and computer science involved in this architecture and it is a challenging set of rabit-holes for you to explore. This is a very deep and philosophical model that truly takes a while to totally comprehend.
The difference out-of-the-box here is not a revolution in how we setup computers or infrastructure, but rather how what we wish to accomplish with these devices can be constructed in a reliable, repeatable, evolutionary way.
Information Systems by their very nature should be able to immediately tell you about themselves... Try that on any "command line interface" and you will find it quite challenging without already "knowing" where things are. Sorry, `manpages` are not intuitive at all.
*Most of us are familiar with a spreadsheet.*
THis is a paper paradigm... Why are we still using paper paradigms on digital screens? Forms, Really??? How 19th Century.
Cowboy AI moves beyond this notion to focus on state machines and relationships.
digraph MealyStateMachine {
rankdir=LR;
node [shape = circle];
// Define states
Waiting [label="Waiting"];
Executing [label="Executing"];
Finished [label="Finished"];
// Transitions with events as edges
Waiting -> Executing [label="Cmd: Execute / Evt: Started"];
Executing -> Finished [label="Cmd: Complete / Evt: Completed"];
// Optional: style for starting state
node [shape = plaintext];
start [label=""];
start -> Waiting;
// Style for end state
Finished [shape = doublecircle];
}
Information should be portable, accessible and flexible. Storing information shouldn't require my personal, proper allocation into a library system complete with personal "tagging" to hopefully add sematics to my ability to find things. That is where "information systems" differ from "computer systems".
Computer systems are now commodity systems we can obtain and use with off-the-shelf components.
Information systems on the other hand, will always be tied directly to one or more Domains. They are concerned with how what information "is" and how it is related and sequenced rather than where it is and how we compute it.
graph LR A("A") -- "transforms_into" --> B("B")
--- OR ---
graph LR A("A") -- "relates_to" --> B("B")
This is the entire idea.
It absolutely does not matter what A or B are, we just want to know they are related. Many relationships will appear and they will become overwhelming quickly.
We have a very clean solution to this with graphs.
graph LR A("Configuration") -- "transforms_into" --> B("Compute Device") -- "resource_of" --> C("Domain")
CIM represented as a microservice
While this is not the typical architecture, it shows a representation most people who have seen some type of microservice can comprehend.
CIM Default Architecture
The CIM Default architecture is a starting point to develop a Domain that will have it's own Ecosystem and Language.
Language is developed through relationships and vector transformations as events occur. New concepts become immediately accessible for review and testing in the domain.
Understanding and leveraging data through straightforward yet powerful interactions.
See worflows in straight-forward businss terms.
graph LR Me(Me) -->|command/query| UOI(The Universe of Information)
Clarifying the flow of information for intuitive system navigation.
Making advanced technologies approachable and useful for everyone.
git clone https://github.com/thecowboyai/cim-start
Code Contributions will be accepted through Pull Requests. We don't have a guide up yet, but it is forthcoming.
Copyright 2024 Cowboy AI, LLC MIT License